import java.util.InputMismatchException;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        System.out.println("欢迎来到猜数字！");
        Scanner scan = new Scanner(System.in); // 将Scanner的创建移到循环外部，避免重复创建

        while (true) {
            int answer = (int) (Math.random() * 100 + 1);
            int chances = 7;
            int guess;

            while (chances > 0) {
                System.out.println("请猜一个 1-100 之间的整数，含 1 和 100，你还有 " + chances + " 次机会：");
                try {
                    guess = scan.nextInt();
                } catch (InputMismatchException e) {
                    /* InputMismatchException
                    叫做输入错配异常，
                    即输入数据类型和要求类型不一致则会出现此异常。
                    此处捕捉此异常进行处理
                     */
                    System.out.println("请输入数字！");
                    scan.next(); // 清除无效输入
                    continue;
                }

                if (guess > answer) {
                    System.out.println("大了！");
                } else if (guess < answer) {
                    System.out.println("小了！");
                } else {
                    System.out.println("恭喜你！猜对了！");
                    break; // 猜对后跳出内层循环
                }
                chances--; // 放在判断之后，更清晰
            }

            if (chances == 0) { // 内层循环结束后，判断是否还有机会
                System.out.println("很遗憾，你没有机会了。正确答案是：" + answer);
            }


            System.out.println("再玩一次吗？ (y/n)");
            String again = scan.next();
            if (!again.equalsIgnoreCase("y")) {
                break; // 不再玩则跳出外层循环
            }
        }
        scan.close();//程序结束，关闭scanner
    }
}